package juego.main;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JLabel;
import javax.swing.SwingConstants;

/**
 * Esta clase maneja el tiempo disponible con que cuenta el usuario
 * para completar el nivel de este juego.
 * @author Latini Macarena
 * @author Rosas Tifany.
 *
 */
public class ControladorTiempo {
	protected int segundos;
	protected int segundosAux;
	protected Timer timer2;
	protected Timer timer;
	protected MainWin main;

	/**
	 * Constructor que inicializa las variables de instancia.
	 * @param m
	 */
	public ControladorTiempo(MainWin m)
	{
		segundos=0;
		segundosAux=0;
		main=m;
	}
	
	//clase interna que sobre-escribe el metodo run de TimerTask
	class RemindTask extends TimerTask {
		public void run() {
			int eti= 100-segundos; // Para que en la etiqueta se
			//muestre de forma regresiva.
			main.obtenerTime().setText("TIME "+eti);
			segundos++;
			segundosAux++;//Variable que representa los segundos que
			//durara la notificacion al usuario.
			if(segundos==100){
				main.obtenerAviso().setVisible(true);
				SoundPlayer s = new SoundPlayer("/juego/musica/gameover.mp3");
				main.obtenerAviso().setText("TIME 00:00");
				main.obtenerAviso().setHorizontalAlignment(SwingConstants.CENTER);
				main.obtenerAviso().setBackground(Color.black);
				main.obtenerAviso().setForeground(Color.white);
				main.obtenerAviso().setOpaque(true);
				main.obtenerAviso().repaint();
				comenzarConteo();
				s.play();

			}
			//Luego de 5 segundos termina el juego.
			if(segundosAux==105 )
			{
				timer.cancel(); //detenemos el timer
				timer2.cancel();
				System.exit(0);
			}
			
		}

		private void comenzarConteo() {
			// TODO Auto-generated method stub
			timer2 = new Timer();
			//le asignamos una tarea al timer
			timer.schedule(new RemindTask(),0, 1*1000);
		}
	}
	
	//Metodo llamado desde el Main para comenzar el tiempo.
	public void comenzar()
	{
		timer = new Timer();
		//le asignamos una tarea al timer
		timer.schedule(new RemindTask(),0, 1*1000);
	}
}
